/*
 * Copyright (C) 2012 POAS.VSTU
 */
package ui;

import model.CardStack;
import model.Card;
import java.awt.Graphics;
import java.util.*;

/**
 * Класс стопка карт.
 * Описывает стопку карт, как физический объект игрового процесса.
 * Отслеживает координаты стопки на игровом поле.
 * Управляет перемещением стопки по игровому полю.
 */
public class UICardStack {
    
    private ArrayList <UICard> stack;
    private int         x;
    private int         y;
    
    /**
     * Конструктор класса.
     * 
     * @param cardStack стопка карт.
     */
    public UICardStack(CardStack cardStack) {
    
        
    
    }
    
    /**
     * Нарисовать стопку.
     * @param g поле для отрисовки.
     */
    public void draw(Graphics g) {

        
        
    }
    
    /** Изменить местоположение стопки. */
    public void setPosition(int xx, int yy) {
        x = xx;
        y = yy;
    }
    
    /** Получить координату x стопки. */
    public int getX() {return x;}
    
    /** Получить координату y стопки. */
    public int getY() {return y;}
    
    /**
     * Извлечь карту из стопки.
     * @param card извлекаемая карта.
     * @return карта, как ui объект.
     */
    public UICard extractCard(Card card) {
        
        
        UICard c = new UICard(card);    // это неправильно, просто чтобы
        return c;                       // не ругался нужно что-то вернуть
    }
    
    /**
     * Извлечь 4 карты одного ранга из стопки.
     * @param rang ранг извлекаемых карт.
     * @return контейнер, содержащий 4 извлекаемые карты.
     */
    public ArrayList <UICard> extractFourCards(int rang) {
        
        
        ArrayList <UICard> list = new ArrayList <>();    // это неправильно, просто чтобы
        return list;                       // не ругался нужно что-то вернуть
    }
    
    /**
     * Извлечь несколько карт из стопки.
     * @param cards контейнер, содержащий извлекаемые карты.
     * @return контейнер, содержащий извлекаемые карты.
     */
    public ArrayList <UICard> extractAnyCards(ArrayList <Card> cards) {
        
        
        ArrayList <UICard> list = new ArrayList <>();    // это неправильно, просто чтобы
        return list;                       // не ругался нужно что-то вернуть
    }
    
    /**
     * Извлечь последние N карт из стопки.
     * @param N число извлекаемых карт.
     * @return контейнер, содержащий извлекаемые карты.
     */
    public ArrayList <UICard> extractAnyLastCards(int N) {
        
        
        ArrayList <UICard> list = new ArrayList <>();    // это неправильно, просто чтобы
        return list;                       // не ругался нужно что-то вернуть
    }
    
    /**
     * Добавить карту в стопку.
     * @param card добавляемая карта.
     */
    public void addCard(UICard card) {
        
        
        
    }
    
    /**
     * Получить позицию карты, которую она должна будет иметь в стопке.
     * @param card карта, место для которой ищется в стопке.
     */
    public int getPositionForCard(UICard card) {
        
        
        return 0;
    }
    
}
